//
//  NSDate+Extension.swift
//  1.时间处理
//
//  Created by yaochunlin on 16/4/19.
//  Copyright © 2016年 yaochunlin. All rights reserved.
//

import Foundation

extension NSDate {

    class func date(sinaString: String) ->NSDate {
    
        //日期格式化类
        let formatter = NSDateFormatter()
        
        //设置格式
        formatter.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"
        
        //设置时区
        formatter.locale = NSLocale.init(localeIdentifier: "EN")
        
        //转换为NSDate
        let date = formatter.dateFromString(sinaString) ?? NSDate()
        
        return date
    }
    
    //根据时间的需求返回不同的字符串 与当前时间对比
    func sinaDateDescription() -> String {
    
        //NSCalendar专门处理时间的类
        let calender = NSCalendar.currentCalendar()
        
        //当天
        if calender.isDateInToday(self) {
            
            //判断系统时间与新浪时间相差的秒数
            let delta =  Int(NSDate().timeIntervalSinceDate(self))
            
            if delta < 60 {
                
                return "刚刚"
            }
            
            if delta < 60 * 60 {
                
                return "\(delta / 60)分钟前"
            }
            
            return "\(delta / 3600)小时前"
        }
        
        //其他情况需要时间格式化
        
        var formatter = ""
        
        if calender.isDateInYesterday(self) {
            
            formatter = "昨天: HH:mm"
        }else if calender.compareDate(self, toDate: NSDate(), toUnitGranularity: NSCalendarUnit.Year) == NSComparisonResult.OrderedSame{
        
            formatter = "MM-dd HH:mm"
        }else {
        
            formatter = "yyyy-MM-dd HH:mm"
        }
        
        //将时间转换为特殊的字符串
        let df = NSDateFormatter()
        
        df.dateFormat = formatter
        
        df.locale = NSLocale.init(localeIdentifier: "EN")
        
        let dateString = df.stringFromDate(self)
        
        return dateString
   
    }
}

